package com.whfc.mach.manager;

import com.whfc.common.result.PageData;
import com.whfc.mach.dto.AppMachDataLogDTO;
import com.whfc.mach.dto.Gps;
import com.whfc.mach.dto.Oil;
import com.whfc.mach.entity.AppMachDataLog;

import java.util.Date;
import java.util.List;

/**
 * @author sun_guodong
 * @description dobbo 内部调用 设备历史数据
 * @date 2020-12-02
 */
public interface MachDataLogManager {

    /**
     * 获取硬件数据记录
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<AppMachDataLogDTO> getDeviceDataLog(Integer deviceId, Date startTime, Date endTime, Integer pageNum, Integer pageSize);

    /**
     * 添加设备硬件数据到数据库
     *
     * @param logList
     */
    void addMachDataLog(List<AppMachDataLog> logList);

    /**
     * 增加设备的缓存数据
     *
     * @param machId
     * @param date
     * @param dayLogList
     */
    void addMachDataLogCache(Integer machId, Date date, List<AppMachDataLog> dayLogList);

    /**
     * 删除设备缓存数据
     *
     * @param machId
     * @param date
     */
    void delMachDataLogCache(Integer machId, Date date);

    /**
     * 从缓存中查询设备硬件数据
     *
     * @param machId
     * @param date
     * @return
     */
    List<AppMachDataLogDTO> getMachDataLogCache(Integer machId, Date date);

    /**
     * 从缓存中查询设备硬件数据
     *
     * @param machId
     * @param date
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppMachDataLogDTO> getMachDataLogCache(Integer machId, Date date, Date startTime, Date endTime);

    /**
     * 查找设备运动轨迹
     *
     * @param machId
     * @param date
     * @return
     */
    List<Gps> getMachGpsByDate(Integer machId, Date date);

    /**
     * 查询设备运动轨迹
     *
     * @param machId
     * @param date
     * @param isFilter
     * @return
     */
    List<Gps> getMachGpsByDate(Integer machId, Date date, boolean isFilter);

    /**
     * 获取设备油位信息
     *
     * @param machId
     * @param date
     * @return
     */
    List<Oil> getMachOilByDate(Integer machId, Date date);

    /**
     * 获取设备油位信息
     *
     * @param machId
     * @param date
     * @param startTime
     * @param endTime
     * @return
     */
    List<Oil> getMachOilByDate(Integer machId, Date date, Date startTime, Date endTime);

    /**
     * 获取一段时间的油耗
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<Oil> getMachOilByTime(Integer machId, Date startTime, Date endTime);

}
